Oracle Union运算符 | 您所在的位置:网站首页 › union怎么用 sql › Oracle Union运算符 |
在本教程中,您将学习如何使用Oracle UNION运算符来组合由两个或多个查询返回的结果集。 Oracle UNION运算符简介UNION运算符是一个集合运算符,它将两个或多个SELECT语句的结果集组合到一个结果集中。 以下说明了组合两个查询的结果集的UNION运算符的语法: SELECT column_list_1 FROM T1 UNION SELECT column_list_1 FROM T2;在此声明中,column_list_1和column_list_2必须具有相同顺序的相同列数。 另外,对应列的数据类型必须是相同的数据类型组,例如数字或字符。 SELECT column_list FROM T1 UNION ALL SELECT column_list FROM T2;Oracle UNION图示 假设有两个表 - T1和T2: T1有三行:1,2和3T2也有三行:2,3和4下图说明了T1和T2表的UNION运算图示: UNION运算符删除(消除)重复的行 - 2和3 下图显示了UNION ALL运算符T1和T2表的结果: 正如上面所看到的,UNION ALL保留了重复的行 - 2和3。 Oracle UNION示例请参阅示例数据库中的以下employees表和contacts表的ER图结构。 Oracle UNION示例1假设,需要发送电子邮件到员工和联系人表的电子邮件地址。 要做到这一点,首先,需要撰写员工和联系人的电子邮件地址列表。然后发送电子邮件到列表中。 以下语句使用UNION运算符来构建员工和联系人表中的联系人列表: SELECT first_name, last_name, email, 'contact' FROM contacts UNION SELECT first_name, last_name, email, 'employee' FROM employees;执行上面查询语句,得到以下结果 - 要对由UNION运算符返回的结果集进行排序,可以将ORDER BY子句添加到最后一个SELECT语句中,如下所示: SELECT first_name || ' ' || last_name name, email, 'contact' FROM contacts UNION SELECT first_name || ' ' || last_name name, email, 'employee' FROM employees ORDER BY name DESC;在这个例子中,将first_name和last_name连接起来,并使用一个别名:name,结果按name列排序。执行上面查询代码,得到以下结果 - 以下语句返回员工和联系人的唯一姓氏(last_name): SELECT last_name FROM employees UNION SELECT last_name FROM contacts ORDER BY last_name;该查询返回了357个唯一的姓氏(last_name)值。参考下面结果 - 但是,如果在查询中使用UNION ALL而不是UNION,如下所示: SELECT last_name FROM employees UNION ALL SELECT last_name FROM contacts ORDER BY last_name;该查询返回426行。 另外,一些行是重复的,例如,Atkinson, Barnett。 这是因为UNION ALL操作符不会删除重复的行。 UNION将结果集放置在另一个上面,这意味着它将垂直地附加结果集。但是,诸如INNER JOIN或LEFT JOIN的连接将结果集水平组合。 下图说明了union和join的区别: 在本教程中,您已经学习了如何使用Oracle UNION运算符来组合多个查询的结果集。 上一篇: Oracle All运算符 下一篇: Oracle Intersect运算符 |
CopyRight 2018-2019 实验室设备网 版权所有 |